use egui::Vec2;
use QcUI::component::{Button, Widget};

use crate::inspector::{ComponentState, InspectorContext, InspectorTrait};

impl InspectorTrait for Widget {
    fn inspector(&mut self, ctx: &mut InspectorContext, state: &mut ComponentState) {
        egui::CollapsingHeader::new("Widget")
            .default_open(true)
            .show(ctx.ui, |ui| {
                ui.group(|ui| {
                    ui.set_min_width(ui.available_width() - 5.);
                    egui::Grid::new("Widget")
                        .num_columns(2)
                        .min_col_width(70.)
                        .spacing(Vec2::new(10., 10.))
                        .show(ui, |ui| {
                            ui.label("位置");
                            ui.horizontal(|ui| {
                                let mut size = ui.spacing().interact_size;
                                size.x = (ui.available_width() - 10.) / 2.;
                                ui.add_sized(
                                    size,
                                    egui::DragValue::new(&mut self.position.x).speed(1),
                                );
                                ui.add_space(10.);
                                ui.add_sized(
                                    size,
                                    egui::DragValue::new(&mut self.position.y).speed(1),
                                );
                            });
                            ui.end_row();

                            ui.label("尺寸");
                            let width = ui.available_width() - 10.;
                            egui::Grid::new("Size")
                                .num_columns(2)
                                .min_col_width(width / 2.)
                                .spacing(Vec2::new(10., 10.))
                                .show(ui, |ui| {
                                    ui.set_width(width);
                                    ui.horizontal(|ui| {
                                        ui.label("宽度");
                                        ui.add_space(10.);
                                        ui.add(egui::DragValue::new(&mut self.width).speed(1));
                                    });
                                    ui.horizontal(|ui| {
                                        ui.label("高度");
                                        ui.add_space(10.);
                                        ui.add(egui::DragValue::new(&mut self.height).speed(1));
                                    });
                                });

                            ui.end_row();

                            ui.label("外边距");

                            let width = ui.available_width() - 30.;
                            egui::Grid::new("Margin")
                                .num_columns(4)
                                .min_col_width(width / 4.)
                                .spacing(Vec2::new(10., 10.))
                                .show(ui, |ui| {
                                    ui.set_width(width);
                                    ui.horizontal(|ui| {
                                        ui.label("上");
                                        ui.add_space(10.);
                                        ui.add(egui::DragValue::new(&mut self.margin.top).speed(1));
                                    });
                                    ui.horizontal(|ui| {
                                        ui.label("右");
                                        ui.add_space(10.);
                                        ui.add(
                                            egui::DragValue::new(&mut self.margin.right).speed(1),
                                        );
                                    });
                                    ui.horizontal(|ui| {
                                        ui.label("下");
                                        ui.add_space(10.);
                                        ui.add(
                                            egui::DragValue::new(&mut self.margin.bottom).speed(1),
                                        );
                                    });
                                    ui.horizontal(|ui| {
                                        ui.label("左");
                                        ui.add_space(10.);
                                        ui.add(
                                            egui::DragValue::new(&mut self.margin.left).speed(1),
                                        );
                                    });
                                });

                            ui.end_row();

                            ui.label("内边距");
                            egui::Grid::new("Padding")
                                .num_columns(4)
                                .min_col_width(width / 4.)
                                .spacing(Vec2::new(10., 10.))
                                .show(ui, |ui| {
                                    ui.set_width(width);
                                    ui.horizontal(|ui| {
                                        ui.label("上");
                                        ui.add_space(10.);
                                        ui.add(
                                            egui::DragValue::new(&mut self.padding.top).speed(1),
                                        );
                                    });
                                    ui.horizontal(|ui| {
                                        ui.label("右");
                                        ui.add_space(10.);
                                        ui.add(
                                            egui::DragValue::new(&mut self.padding.right).speed(1),
                                        );
                                    });
                                    ui.horizontal(|ui| {
                                        ui.label("下");
                                        ui.add_space(10.);
                                        ui.add(
                                            egui::DragValue::new(&mut self.padding.bottom).speed(1),
                                        );
                                    });
                                    ui.horizontal(|ui| {
                                        ui.label("左");
                                        ui.add_space(10.);
                                        ui.add(
                                            egui::DragValue::new(&mut self.padding.left).speed(1),
                                        );
                                    });
                                });
                            ui.end_row();

                            ui.label("前景色");

                            ui.color_edit_button_srgba(&mut self.foreground);

                            ui.end_row();

                            ui.label("背景色");
                            ui.color_edit_button_srgba(&mut self.background);
                            ui.end_row();

                            ui.label("字体大小");
                            ui.add(egui::DragValue::new(&mut self.font_size).speed(0.1));
                            ui.end_row();
                        })
                });
            });
    }
}
